const webpack = require('webpack');
const {smart} = require('webpack-merge');
const base = require('./webpack.config.base');
const production = require('./webpack.config.production');
const development = require('./webpack.config.development');

module.exports = (env, argv) => {
    let isDev = argv.mode === 'development'
        , config;

    config = isDev ? smart(base, development, {
        //创建一些全局常量,在所有模块中可使用

        //注意：
        // - 如果配置的值是字符串，那么整个字符串会被当成代码片段来执行,其结果作为最终变量的值
        // - 如果配置的值不是字符串,也不是一个对象字面量,那么该值会被转为一个字符串,如 true,最后的结果是 'true' ×
        // - 如果配置的是一个对象字面量，那么该对象的所有 key 会以同样的方式去定义
        plugins: [
            new webpack.DefinePlugin({
                IS_DEV: isDev,
                o:{
                  a:1,
                  b:true
                },
                bool1:true
            })
        ]

    }) : smart(base, production, {
        plugins: [
            new webpack.DefinePlugin({
                IS_DEV: isDev
            })
        ]

    });

    return config;
};
